﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace DoAn
{
    public partial class frSuaHD : Form
    {
        public frSuaHD()
        {
            InitializeComponent();
        }
        public frSuaHD(string MaHD): this()
        {
            HoaDonBUS bus = new HoaDonBUS();
            HoaDonDTO dto = new HoaDonDTO();                                   
            dto = bus.LayHoaDonTheoMa(MaHD);

            lbMaHD.Text = dto.MaHoaDon;

            NhanVienBUS nvbus = new NhanVienBUS();            
            cbbNhanVien.Text = nvbus.Laynvtheoma(dto.MaNV).MaVaTen;
            KhachHangBUS khbus = new KhachHangBUS();
            cbbKhachHang.Text = khbus.LayKhachTheoMa(dto.MaKH).MaVaTen;
            txtSoPhieuXuat.Text = dto.SoPhieuXuat;
            txtTongGiaTri.Text = dto.TongGiaTri.ToString() ;
            txtGhiChu.Text = dto.GhiChu;

            HTTTBUS httt = new HTTTBUS();
            cbbHTTT.Text = httt.LayHTTTTheoMa(dto.MaHTTT).TenHTTT;
            cbbNgay.Text = dto.NgayThanhToan.Day.ToString();
            cbbThang.Text = dto.NgayThanhToan.Month.ToString();
            cbbNam.Text = dto.NgayThanhToan.Year.ToString();
        }

        private void frSuaHD_Load(object sender, EventArgs e)
        {
            List<HTTTDTO> htdto = new List<HTTTDTO>();
            HTTTBUS htbus = new HTTTBUS();
            htdto = htbus.LayHTTT();
            cbbHTTT.DataSource = htdto;
            cbbHTTT.ValueMember = "MaHTTT";
            cbbHTTT.DisplayMember = "TenHTTT";

            List<NhanVienDTO> nvdto = new List<NhanVienDTO>();
            NhanVienBUS nvbus = new NhanVienBUS();
            nvdto = nvbus.LayDSNV();
            cbbNhanVien.DataSource = nvdto;
            cbbNhanVien.ValueMember = "MaNV";
            cbbNhanVien.DisplayMember = "MaVaTen";

            List<KhachHangDTO> khdto = new List<KhachHangDTO>();
            KhachHangBUS khbus = new KhachHangBUS();
            khdto = khbus.LayKhachHang();
            cbbKhachHang.DataSource = khdto;
            cbbKhachHang.ValueMember = "MaKH";
            cbbKhachHang.DisplayMember = "MaVaTen";

            for (int i = 0; i < 31; i++)
            {
                if (i < 12)
                    cbbThang.Items.Add(i + 1);
                cbbNgay.Items.Add(i + 1);
                cbbNam.Items.Add(2000 + i);
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            Close();
        }

        private bool CapNhatHoaDon()
        {            
            NhanVienBUS nvBus = new NhanVienBUS();
            List<NhanVienDTO> listnv = new List<NhanVienDTO>();
            listnv = nvBus.LayDSNV();
            string maNV = "";
            for (int i = 0; i < listnv.Count; i++)
                if (listnv[i].MaVaTen == cbbNhanVien.Text)
                    maNV = listnv[i].MaNV;
            if (maNV == "")
            {
                MessageBox.Show("Bạn cần chọn một nhân viên.");
                return false;
            }
            KhachHangBUS khBus = new KhachHangBUS();
            List<KhachHangDTO> listkh = new List<KhachHangDTO>();
            listkh = khBus.LayKhachHang();
            string maKH = "";
            for (int i = 0; i < listkh.Count; i++)
                if (listkh[i].MaVaTen == cbbKhachHang.Text)
                    maKH = listkh[i].MaKH;
            if (maKH == "")
            {
                MessageBox.Show("Bạn cần chọn một khách hàng.");
                return false;
            }
            if (txtSoPhieuXuat.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập số phiếu xuất.");
                return false;
            }
            int maHTTT = -1;
            List<HTTTDTO> httt = new List<HTTTDTO>();
            HTTTBUS htbus = new HTTTBUS();
            httt = htbus.LayHTTT();
            for (int i = 0; i < httt.Count; i++)
                if (httt[i].TenHTTT == cbbHTTT.Text)
                    maHTTT = httt[i].MaHTTT;
            if (maHTTT == -1)
            {
                MessageBox.Show("Bạn cần chọn HTTT.");
                return false;
            }
            try { DateTime.Parse(cbbThang.Text + '/' + cbbNgay.Text + '/' + cbbNam.Text); }
            catch
            {
                MessageBox.Show("Ngày thanh toán không hợp lệ.");
                return false;
            }
            if (txtTongGiaTri.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tổng giá trị.");
                return false;
            }

            HoaDonBUS hd = new HoaDonBUS();
            HoaDonDTO hdDto = new HoaDonDTO();
            hdDto.MaHoaDon = lbMaHD.Text;
            hdDto.MaNV = maNV;
            hdDto.MaKH = maKH;
            hdDto.SoPhieuXuat = txtSoPhieuXuat.Text;
            hdDto.NgayThanhToan = DateTime.Parse(cbbThang.Text + '/' + cbbNgay.Text + '/' + cbbNam.Text);
            hdDto.MaHTTT = int.Parse(cbbHTTT.SelectedValue.ToString());
            hdDto.TongGiaTri = int.Parse(txtTongGiaTri.Text);
            hdDto.GhiChu = txtGhiChu.Text;

            hd.SuaHoaDon(hdDto);            
            return true;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            CapNhatHoaDon();
            Close();
        }
    }
}
